Skip to content

ci: gate pull requests on a single Build Success check - #15

Merged
onedr0p merged 1 commit into
mainfrom
ci/consolidate-pull-request-checks
Jul 25, 2026
Merged

onedr0p merged 1 commit into
mainfrom
ci/consolidate-pull-request-checks

Conversation

@onedr0p

@onedr0p onedr0p commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Overview

Collapses lint.yaml, tests.yaml and e2e.yaml into a single ci.yaml whose
jobs fan in to a Build Success job, so a ruleset can require branches to be up
to date before merge.

All job bodies are unchanged. The three workflows each carried a byte-identical
Detect Changed Charts job; those collapse into one job that all three matrix
jobs depend on, so the chart list is computed once per pull request instead of
three times.

Same change as home-operations/kromgo#321.

Additional information

GitHub rejects strict_required_status_checks_policy unless at least one check
is required, and the individual jobs are unsafe to require here for two reasons:
they are skipped for release-please PRs, and they are skipped when no chart
changed. A required check that never reports blocks the PR permanently.
Build Success runs on !cancelled(), so it reports whether its dependencies
pass or skip.

The pull request trigger drops paths-ignore for the same reason.

The matrix jobs keep their per-chart name suffix (Helm Lint (${{ matrix.chart }}))
so each leg still reports a distinct check.

Job ids are aligned to a helm-* family and each name: is derived from its id:

before after
checks — "Repo Checks" repo-checks — "Repo Checks"
helm-test — "Helm Unit Tests (…)" helm-unittest — "Helm Unittest (…)"
e2e — "Install on kind (…)" helm-e2e — "Helm E2E (…)"
changed — "Detect Changed Charts" changed — "Changed"

Only Build Success will be required, so nothing depends on the old names. The
changed rename is the one that loses descriptiveness — say if you'd rather it
kept a fuller name at the cost of not deriving from its id.

Verified before pushing: every job body is byte-identical to origin/main, the
matrix needs all resolve to the single changed job, Build Success gates all
five, and actionlint, zizmor and oxfmt are clean.

Requirements

  • I have read and agree with the contributing guidelines
  • AI usage disclosure: YES — the workflow change and this description were
    written by an AI agent (Claude Code) under maintainer direction, as part of a
    wider branch-protection rollout. Per the AI Usage Policy this exceeds assistive
    use and needs maintainer review before merge.

Collapses lint.yaml, tests.yaml and e2e.yaml into one ci.yaml whose jobs
fan in to a Build Success job, so a ruleset can require branches to be up
to date before merge. All job bodies are unchanged.

The three workflows each carried an identical "Detect Changed Charts"
job; they collapse into one that all three matrix jobs now depend on,
rather than the chart list being recomputed three times per pull request.

Requiring the individual jobs is unsafe: they are skipped for
release-please PRs and when no chart changed, and a required check that
never reports blocks the pull request permanently. Build Success runs on
!cancelled(), so it reports whether its dependencies pass or skip.

The pull request trigger drops paths-ignore for the same reason.

Job ids form a helm-* family, each job name is derived from its id, and
the jobs are ordered alphabetically with the fan-in last. The matrix jobs
keep their per-chart suffix so each leg still reports a distinct check.

Signed-off-by: Devin Buhl <devin@buhl.casa>
@greptile-apps

greptile-apps Bot commented Jul 25, 2026

Copy link
Copy Markdown

Greptile Summary

Consolidates the lint, unit-test, end-to-end, and repository-check workflows into one CI workflow with shared changed-chart detection and a single aggregate Build Success gate.

  • Adds pull-request, push, merge-group, and manual triggers to the consolidated workflow.
  • Preserves per-chart matrix jobs while centralizing their changed-chart input.
  • Adds an aggregate status job that succeeds when dependencies pass or are intentionally skipped and fails when any dependency fails.
  • Removes the superseded standalone lint and end-to-end workflow files.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking issues identified.

The consolidated workflow preserves the existing job bodies and dependencies, while the aggregate status job correctly fails on dependency failures and permits intentionally skipped jobs.

Files Needing Attention: No files require additional attention.

T-Rex T-Rex Logs

What T-Rex did

  • Compared the base and head workflow definitions against an executable validation harness to confirm alignment.
  • Verified preserved job steps, shared changed-chart dependencies, CI triggers, and Build Success pass/skip/failure behavior.
  • Checked local validation tool availability and noted unavailable workflow linters were not installed.
  • Before capture showed the base had three independently parsed workflows, three local changed-chart jobs, and no consolidated Build Success job.
  • After capture exited 0 with matching SHA-256 fingerprints for preserved step bodies and passing dependency/expression assertions.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
.github/workflows/ci.yaml Consolidates all existing CI jobs, adds merge-queue support, and introduces the aggregate Build Success check without an identified actionable defect.
.github/workflows/e2e.yaml Deletes the standalone end-to-end workflow after moving its job body into the consolidated CI workflow.
.github/workflows/lint.yaml Deletes the standalone lint workflow after moving its job body into the consolidated CI workflow.

Reviews (1): Last reviewed commit: "ci: gate pull requests on a single Build..." | Re-trigger Greptile

@onedr0p
onedr0p merged commit f5c2027 into main Jul 25, 2026
7 checks passed
@onedr0p
onedr0p deleted the ci/consolidate-pull-request-checks branch July 25, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant